;@InterfaceName=IDirectDrawSurface4

; include IUnknown
BaseIID={00000000-0000-0000-C000-000000000046}


VTBLIndex=3|HRESULT IDirectDrawSurface4::AddAttachedSurface(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface);|FailureIfNegativeRet
VTBLIndex=4|HRESULT IDirectDrawSurface4::AddOverlayDirtyRect(LPDIRECTDRAWSURFACE4 lpDDSurface, LPRECT lpRect);|FailureIfNegativeRet
VTBLIndex=5|HRESULT IDirectDrawSurface4::Blt(LPDIRECTDRAWSURFACE4 lpDDSurface,LPRECT lpDestRect,LPDIRECTDRAWSURFACE4 lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltF);|FailureIfNegativeRet
VTBLIndex=6|HRESULT IDirectDrawSurface4::BltBatch(LPDIRECTDRAWSURFACE4 lpDDDestSurface,LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlag);|FailureIfNegativeRet
VTBLIndex=7|HRESULT IDirectDrawSurface4::BltFast(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE4 lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTran);|FailureIfNegativeRet
VTBLIndex=8|HRESULT IDirectDrawSurface4::DeleteAttachedSurfaces(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags,LPDIRECTDRAWSURFACE4 lpDDSAttachedSurface);|FailureIfNegativeRet
VTBLIndex=9|HRESULT IDirectDrawSurface4::EnumAttachedSurfaces(LPDIRECTDRAWSURFACE4 lpDDSurface,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback);|FailureIfNegativeRet
VTBLIndex=10|HRESULT IDirectDrawSurface4::EnumOverlayZOrders(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback);|FailureIfNegativeRet
VTBLIndex=11|HRESULT IDirectDrawSurface4::Flip(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDIRECTDRAWSURFACE4 lpDDSurfaceTargetOverride,DWORD dwFlag);|FailureIfNegativeRet
VTBLIndex=12|HRESULT IDirectDrawSurface4::GetAttachedSurface(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDDSCAPS2 lpDDSCaps,LPLPDIRECTDRAWSURFACE4* lplpDDAttachedSurface);|FailureIfNegativeRet
VTBLIndex=13|HRESULT IDirectDrawSurface4::GetBltStatus(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlag);|FailureIfNegativeRet
VTBLIndex=14|HRESULT IDirectDrawSurface4::GetCaps(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDDSCAPS2 lpDDSCap);|FailureIfNegativeRet
VTBLIndex=15|HRESULT IDirectDrawSurface4::GetClipper(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDIRECTDRAWCLIPPER* lplpDDClippe);|FailureIfNegativeRet
VTBLIndex=16|HRESULT IDirectDrawSurface4::GetColorKey(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);|FailureIfNegativeRet
VTBLIndex=17|HRESULT IDirectDrawSurface4::GetDC(LPDIRECTDRAWSURFACE4 lpDirectDrawSurface,HDCFAR *lphD);|FailureIfNegativeRet
VTBLIndex=18|HRESULT IDirectDrawSurface4::GetFlipStatus(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlag);|FailureIfNegativeRet
VTBLIndex=19|HRESULT IDirectDrawSurface4::GetOverlayPosition(LPDIRECTDRAWSURFACE4 lpDDSurface,LPLONG lplX,LPLONG lplY);|FailureIfNegativeRet
VTBLIndex=20|HRESULT IDirectDrawSurface4::GetPalette(LPDIRECTDRAWSURFACE4 lpDDSurface,LPLPDIRECTDRAWPALETTE lplpDDPalette);|FailureIfNegativeRet
VTBLIndex=21|HRESULT IDirectDrawSurface4::GetPixelFormat(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDDPIXELFORMAT lpDDPixelFormat);|FailureIfNegativeRet
VTBLIndex=22|HRESULT IDirectDrawSurface4::GetSurfaceDesc(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDDSURFACEDESC2 lpDDSurfaceDesc);|FailureIfNegativeRet
VTBLIndex=23|HRESULT IDirectDrawSurface4::Initialize(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDIRECTDRAW lpDD,LPDDSURFACEDESC2 lpDDSurfaceDesc);|FailureIfNegativeRet
VTBLIndex=24|HRESULT IDirectDrawSurface4::IsLost(LPDIRECTDRAWSURFACE4 lpDDSurface);|FailureIfNegativeRet
VTBLIndex=25|HRESULT IDirectDrawSurface4::Lock(LPDIRECTDRAWSURFACE4 lpDDSurface,LPRECT lpDestRect,LPDDSURFACEDESC2 lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent);|FailureIfNegativeRet
VTBLIndex=26|HRESULT IDirectDrawSurface4::ReleaseDC(LPDIRECTDRAWSURFACE4 lpDDSurface,HDC hDC);|FailureIfNegativeRet
VTBLIndex=27|HRESULT IDirectDrawSurface4::Restore(LPDIRECTDRAWSURFACE4 lpDDSurface);|FailureIfNegativeRet
VTBLIndex=28|HRESULT IDirectDrawSurface4::SetClipper(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDIRECTDRAWCLIPPER lpDDClippe);|FailureIfNegativeRet
VTBLIndex=29|HRESULT IDirectDrawSurface4::SetColorKey(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);|FailureIfNegativeRet
VTBLIndex=30|HRESULT IDirectDrawSurface4::SetOverlayPosition(LPDIRECTDRAWSURFACE4 lpDDSurface,LONG lX,LONG lY);|FailureIfNegativeRet
VTBLIndex=31|HRESULT IDirectDrawSurface4::SetPalette(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDIRECTDRAWPALETTE lpDDPalette);|FailureIfNegativeRet
VTBLIndex=32|HRESULT IDirectDrawSurface4::Unlock(LPDIRECTDRAWSURFACE4 lpDDSurface,LPVOID lpSurfaceData);|FailureIfNegativeRet
VTBLIndex=33|HRESULT IDirectDrawSurface4::UpdateOverlay(LPDIRECTDRAWSURFACE4 lpDDSrcSurface,LPRECT lpSrcRect,LPDIRECTDRAWSURFACE4 lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFx);|FailureIfNegativeRet
VTBLIndex=34|HRESULT IDirectDrawSurface4::UpdateOverlayDisplay(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlag);|FailureIfNegativeRet
VTBLIndex=35|HRESULT IDirectDrawSurface4::UpdateOverlayZOrder(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags,LPDIRECTDRAWSURFACE4 lpDDSReference);|FailureIfNegativeRet

;Added in the v2 interface
VTBLIndex=36|HRESULT IDirectDrawSurface4::GetDDInterface(LPDIRECTDRAWSURFACE4 lpDDSurface,LPVOID* lplpDD)|out|FailureIfNegativeRet
VTBLIndex=37|HRESULT IDirectDrawSurface4::PageLock(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags)|FailureIfNegativeRet
VTBLIndex=38|HRESULT IDirectDrawSurface4::PageUnlock(LPDIRECTDRAWSURFACE4 lpDDSurface,DWORD dwFlags)|FailureIfNegativeRet

;Added in the v3 interface
VTBLIndex=39|HRESULT IDirectDrawSurface4::SetSurfaceDesc(LPDIRECTDRAWSURFACE4 lpDDSurface,LPDDSURFACEDESC2 lpddsd2,DWORD dwFlags)|FailureIfNegativeRet

;Added in the v4 interface
VTBLIndex=40|HRESULT IDirectDrawSurface4::SetPrivateData(LPDIRECTDRAWSURFACE4 lpDDSurface, REFGUID guidTag, LPVOID lpData:PointedDataSize=Arg4, DWORD cbSize, DWORD dwFlags)|FailureIfNegativeRet
VTBLIndex=41|HRESULT IDirectDrawSurface4::GetPrivateData(LPDIRECTDRAWSURFACE4 lpDDSurface, REFGUID guidTag, LPVOID lpData, LPDWORD lpcbBufferSize)|out|FailureIfNegativeRet
VTBLIndex=42|HRESULT IDirectDrawSurface4::FreePrivateData(LPDIRECTDRAWSURFACE4 lpDDSurface, REFGUID guidTag)|FailureIfNegativeRet
VTBLIndex=43|HRESULT IDirectDrawSurface4::GetUniquenessValue(LPDIRECTDRAWSURFACE4 lpDDSurface, LPDWORD lpValue)|out|FailureIfNegativeRet
VTBLIndex=44|HRESULT IDirectDrawSurface4::ChangeUniquenessValue(LPDIRECTDRAWSURFACE4 lpDDSurface)|FailureIfNegativeRet